home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 145
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z
/
Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin
/
ikap
/
etc
/
f56
/
f56make.c
next >
Wrap
C/C++ Source or Header
|
2000-05-08
|
2KB
|
81 lines
/*
画面表示情報から「5x6ドット非漢字全角コードマップフォントファイル」を生成
6万色:白(0xffff)地に黒(0x0000)であること
*/
#include <stdio.h>
/*
指定座標から5x6ドットビットマップ情報(4バイト)をpatにかきだし
*/
int getFont5x6(fx,fy,pataddr)
int fx,fy;
unsigned char *pataddr;
{
int x,y,pat;
unsigned char *buf;
buf=pat;
pat=0;
for( y=0; y<6; y++ ){ ; for( x=0; x<5; x++ ){
pat<<=1;
if( point(fx+x,fy+y)==0 ){
pat|=1;
}
}}
// pataddr[0]=(pat&0b00 1111111111 1111111111 1111111111)
pataddr[0]=(pat&0b00111111110000000000000000000000)>>22;
pataddr[1]=(pat&0b00000000001111111100000000000000)>>14;
pataddr[2]=(pat&0b00000000000000000011111111000000)>> 6;
pataddr[3]=(pat&0b00000000000000000000000000111111)<< 2;
}
/* [area][code][size] */
unsigned char fontBuf[8][94+2][4];
int main(argc,argv)
int argc;
char *argv[];
{
short area,fx,fy,fcode;
for( area=0; area<8; area++ ){
for( fy=0; fy<6; fy++ ){
for( fx=0; fx<=0x0f; fx++ ){
fcode=fy*0x10+fx;
getFont5x6(fx*8,fy*8+area*48,fontBuf[area][fcode]);
}
}
}
{
FILE *fp;
fp=fopen(argv[1],"wb");
if( fp==NULL ){
printf(
"画面表示から5x6ドットフォントデータ(バイナリ)を作ります\n"
"usage:@>f56make filename.f56\n"
"※実行前に、6万色画面にフォントデータを表示しておくこと\n"
);
goto quick_exit;
}
for( area=0; area<8; area++ ){
fwrite(&fontBuf[area][1],sizeof(unsigned char),94*4,fp);
}
fclose(fp);
}
quick_exit:
return(0);
}